<?php
/**
* controller 类
* 功能：解析url，地址路由，根据参数调用功能模块。
* author:wena
* 2011-05-04
*/
class controller{
	
	protected $_model,$_action,$_body,$_params,$_cache;
	static $_instance;
	
	/**
	* 获取controller的单一实例
	*/
	public static function getInstance(){
		if(!(self::$_instance instanceof self))
		{
			self::$_instance= new self();
		}
		return self::$_instance;
	}
	
	/**
	* 私有构造函数，避免其他地方实例化controller类
	*/
	private function __construct(){
		$this->_model = $_REQUEST['m']?$_REQUEST['m']:'index';
		$this->_action= $_REQUEST['a']?$_REQUEST['a']:'index';
		$comm = '';
		foreach($_GET as $key=>$value)
		{
			$this->_params.=$comm .$key.'-'.$value;
			$comm='-';
		}
	}
	
	/**
	* 地址路由,根据get参数，反射调用model功能类，
	* 加入缓存判断，当缓存存在并且未过期，则根据get参数获取缓存
	*/
	public function route()
	{
			//反射调用model类
			if(class_exists($this->getModel()))
			{
				$rc = new ReflectionClass($this->getModel());
				if($rc->hasMethod($this->getAction()))
				{
					$model = $rc->newInstance();
					$method= $rc->getMethod($this->getAction());
					$method->invoke($model);
				}
			}
	}
	
	/**
	* 获取当前url的 model名称
	*/
	public function getModel()
	{
		return $this->_model;
	}
	/**
	* 获取当前url的action名称
	*/
	public function getAction()
	{
		return $this->_action;
	}

}
?>